﻿
using Might.Infrastructure.ModelicaDOM;

namespace Might.Infrastructure.Annotations.Graphics {
    ///<summary>
    ///</summary>
    [Mapping("LinePattern")]
    public enum LinePattern {
        ///<summary>
        ///</summary>
        [Mapping("None")]
        None,
        ///<summary>
        ///</summary>
        [Mapping("Solid")]
        Solid,
        ///<summary>
        ///</summary>
        [Mapping("Dash")]
        Dash,
        ///<summary>
        ///</summary>
        [Mapping("Dot")]
        Dot,
        ///<summary>
        ///</summary>
        [Mapping("DashDot")]
        DashDot,
        ///<summary>
        ///</summary>
        [Mapping("DashDotDot")]
        DashDotDot
    } ;

    /// <summary>
    /// The FillPattern attributes Horizontal, Vertical, Cross, Forward, 
    /// Backward and CrossDiag specify fill patterns drawn with the line 
    /// color over the fill color.
    /// 
    /// The attributes HorizontalCylinder, VerticalCylinder and Sphere specify
    /// gradients that represent a horizontal cylinder, a vertical cylinder
    /// and a sphere, respectively. The gradient goes from line color to fill
    /// color.
    /// </summary>
    [Mapping("FillPattern")]
    public enum FillPattern {
        ///<summary>
        ///</summary>
        [Mapping("None")]
        None,
        ///<summary>
        ///</summary>
        [Mapping("Solid")]
        Solid,
        ///<summary>
        ///</summary>
        [Mapping("Horizontal")]
        Horizontal,
        ///<summary>
        ///</summary>
        [Mapping("Vertical")]
        Vertical,
        ///<summary>
        ///</summary>
        [Mapping("Cross")]
        Cross,
        ///<summary>
        ///</summary>
        [Mapping("Forward")]
        Forward,
        ///<summary>
        ///</summary>
        [Mapping("Backward")]
        Backward,
        ///<summary>
        ///</summary>
        [Mapping("CrossDiag")]
        CrossDiag,
        ///<summary>
        ///</summary>
        [Mapping("HorizontalCylinder")]
        HorizontalCylinder,
        ///<summary>
        ///</summary>
        [Mapping("VerticalCylinder")]
        VerticalCylinder,
        ///<summary>
        ///</summary>
        [Mapping("Sphere")]
        Sphere
    } ;

    /// <summary>
    /// The border pattern attributes Raised, Sunken and Engraved represent
    /// frames which are rendered in a tool-dependent way.
    /// </summary>
    [Mapping("BorderPattern")]
    public enum BorderPattern {
        ///<summary>
        ///</summary>
        [Mapping("None")]
        None,
        ///<summary>
        ///</summary>
        [Mapping("Raised")]
        Raised,
        ///<summary>
        ///</summary>
        [Mapping("Sunken")]
        Sunken,
        ///<summary>
        ///</summary>
        [Mapping("Engraved")]
        Engraved
    } ;

    /// <summary>
    /// The smooth attribute specifies that a line can be drawn as straight
    /// line segments (None) or using a spline (Bezier), where the line’s 
    /// points specify control points of a quadratic Bezier curve.
    /// 
    /// For lines with only two points, the smooth attribute has no effect.
    /// 
    /// For lines with three or more points (P1, P2, …, Pn), the middle point
    /// of each line segment (P12, P23, …, P(n-1)n) becomes the starting point
    /// and ending points of each quadratic Bezier curve. For each quadratic
    /// Bezier curve, the common point of the two line segment becomes the
    /// control point. For instance, point P2 becomes the control point for
    /// the Bezier curve starting at P12 and ending at P23. A straight line 
    /// is drawn between the starting point of the line and the starting point
    /// of the first quadratic Bezier curve, as well as between the ending
    /// point of the line and the ending point of the last quadratic Bezier
    /// curve.
    /// </summary>
    [Mapping("Smooth")]
    public enum Smooth {
        ///<summary>
        ///</summary>
        [Mapping("None")]
        None,
        ///<summary>
        ///</summary>
        [Mapping("Bezier")]
        Bezier
    } ;

    ///<summary>
    ///</summary>
    [Mapping("Arrow")]
    public enum Arrow {
        ///<summary>
        ///</summary>
        [Mapping("None")]
        None,
        ///<summary>
        ///</summary>
        [Mapping("Open")]
        Open,
        ///<summary>
        ///</summary>
        [Mapping("Filled")]
        Filled,
        ///<summary>
        ///</summary>
        [Mapping("Half")]
        Half
    } ;

    ///<summary>
    ///</summary>
    [Mapping("TextStyle")]
    public enum TextStyle {
        ///<summary>
        ///</summary>
        [Mapping("Bold")]
        Bold,
        ///<summary>
        ///</summary>
        [Mapping("Italic")]
        Italic,
        ///<summary>
        ///</summary>
        [Mapping("Underline")]
        Underline
    } ;

    ///<summary>
    ///</summary>
    [Mapping("TextAlignment")]
    public enum TextAlignment {
        ///<summary>
        ///</summary>
        [Mapping("Left")]
        Left,
        ///<summary>
        ///</summary>
        [Mapping("Center")]
        Center,
        ///<summary>
        ///</summary>
        [Mapping("Right")]
        Right
    } ;
}